package com.htgd.gardenexpo.utils;

import org.springframework.stereotype.Component;

import java.time.Duration;
import java.time.LocalDateTime;

/**
 * 日期工具类
 * @author lihailong
 * @date
 */
@Component
public class TimeUtils {
    public static void main(String[] args) {
        // 示例：传入分钟数并输出转换后的时间格式
        int minutes = 125;  // 你可以传入任何分钟数
        System.out.println(formatMinutesToTime(minutes));
    }

    // 转换分钟数为 "00:00" 格式的小时和分钟
    public static String formatMinutesToTime(long minutes) {
        long hours = minutes / 60;  // 计算小时数
        long remainingMinutes = minutes % 60;  // 计算剩余的分钟数

        // 格式化并返回时间字符串，确保小时和分钟都是两位数
        return String.format("%02d:%02d", hours, remainingMinutes);
    }

    /**
     * 将秒格式化为 00：00：00
     * @param seconds
     * @return
     */
    public static String formatSecondsToTime(long seconds) {
        long hours = seconds / 3600;  // 计算小时数
        long remainingSeconds = seconds % 3600;  // 剩余秒数
        long minutes = remainingSeconds / 60;  // 计算分钟数
        long remainingSecondsAfterMinutes = remainingSeconds % 60;  // 剩余的秒数

        // 格式化并返回时间字符串，确保小时、分钟和秒都是两位数
        return String.format("%02d:%02d:%02d", hours, minutes, remainingSecondsAfterMinutes);
    }

    public static String getTimeRemaining(LocalDateTime endDate) {
        // 获取当前时间
        LocalDateTime currentDate = LocalDateTime.now();

        // 计算时间差
        Duration duration = Duration.between(currentDate, endDate);

        // 如果时间差小于等于0，表示已经结束
        if (duration.isNegative() || duration.isZero()) {
            return "已结束";
        }

        // 计算天数和小时数
        long days = duration.toDays();
        long hours = duration.toHours() % 24;

        // 如果差距大于1天，返回“几天几小时”
        if (days > 0) {
            return days + "天" + hours + "小时后结束";
        } else {
            // 如果差距小于1天，返回“几小时后结束”
            return hours + "小时后结束";
        }
    }

    // 函数：将秒数转换为分钟（去除多余的秒数部分）
    public static int convertSecondsToMinutes(long totalSeconds) {
        return (int) (totalSeconds / 60);  // 通过整数除法计算分钟，自动抹去秒数部分
    }
}
